/*
 * tclass.h
 *
 *  Created on: Jan 24, 2016
 *      Author: root
 */

#ifndef TCLASS_H_
#define TCLASS_H_

#include "../basic/ds.h"

DEFINE_OPERATOR( add_property        );
DEFINE_OPERATOR( delete_property     );
DEFINE_OPERATOR( add_method          );
DEFINE_OPERATOR( delete_method       );
DEFINE_OPERATOR( add_inheritance     );
DEFINE_OPERATOR( change_inheritance  );
INIT_OPERATORS( class );

void init_class_hierarchy(Scheme *sc);
Cell *make_class(Scheme *sc, Cell *className);

Cell *find_class_by_name(Scheme *sc, Cell *className);
Cell* define_class(Scheme *sc, Cell *code);
Cell* define_method(Scheme *sc, Cell *code, int firstDefine);
Cell* define_constructor(Scheme *sc, Cell *code);

#endif /* TCLASS_H_ */
